/*
 * Exploder
 * 
 * Tero Pyylampi (218437), Jussi Tuurinkoski (211594)
 *
 * Includes commonly used constants eg. screen width + height,
 * texture scale rates, default settings etc.
 */

#ifndef COMMON_H
#define COMMON_H

// initialize values of the module
void initValues( float width, float height );

// windows size
extern float WIN_WIDTH;
extern float WIN_HEIGHT;

// scalerates for textures
extern float RATEX;
extern float RATEY;

// whether to display fps
extern bool SHOW_FPS;

// box 2d velocity & position iterations
extern int BOX2D_VELOCITY_ITERATIONS;
extern int BOX2D_POSITION_ITERATIONS;

// default world width and height visible on the game screen
extern float WORLD_WIDTH;
extern float WORLD_HEIGHT;

// treshold for moving objects
extern float OBJECT_MOVING_TRESHOLD;

// z-sections of the game where Z grows towards the user
enum zOrder {
	// background layer
	Z_LAYER_BACKGROUND = 0,
	// main z orders of the layer
	Z_LAYER_GAME_BACK,
	Z_LAYER_GAME_MIDDLE,
	Z_LAYER_GAME_FRONT,
	// fog and other effects to be shown above everything else
	Z_LAYER_FOREGROUND,
	// game effects
	Z_LAYER_GAME_EFFECTS,
	// interface -section
	Z_LAYER_INTERFACE,
	// menu -section
	Z_LAYER_MENU,
	// menu effects
	Z_LAYER_MENU_EFFECTS
};

// different item types
enum PhysicObjectItems {
	ELEMENT_WOOD_BOX,
	ELEMENT_STEEL_BOX,
	ELEMENT_STEEL_BAR,
	ELEMENT_GROUND,
	ELEMENT_INVALID,
	BOMB_SMALL_MINE,
	BOMB_MEDIUM,
	BOMB_INVALID,
	BORDER_WOOD,
	BORDER_INVALID
};

// different attributes for the objects
enum ElementType {
	NEUTRAL,
	MUST_BE_MOVED,
	SHOULD_NOT_MOVE
};

// bomb prizes
extern int PRIZE_ARRAY[ 11 ];

#endif